//name和age虽然没有使用属性描述符来定义，但是他们也是具备对应的特性的
//value：赋值的value
//configurble：true
//writable:true

var obj = {
    name:"sott",
    age:18
}

//数据属性描述符
Object.defineProperty(obj,"address",{
    //很多配置
    value:'北京市',//默认undefined
    //该属性不可删除/也不可以重新定义属性描述符
    configurable:false,//默认false
    //该属性是配置对应的属性(address)是否可以枚举
    enumerable:true,//默认是false
    //该特性是属性是否可以赋值(修改值)
    writable:false//默认是false 
})

// delete obj.name
// console.log(obj.name)
// delete obj.address
// console.log(obj.address)

//测试configurable的作用
// Object.defineProperty(obj,"address",{
//     value:"广州市",
//     configurable:true
// })
// console.log(obj.address)

//测试enumberable的作用
// console.log(obj)
// for(var key in obj){
//     console.log(key)
// }
// console.log(Object.keys(obj))

//测试writable
obj.address="上海市"
console.log(obj.address)